// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "content/browser/renderer_host/input/synthetic_pinch_gesture.h"

#include "content/browser/renderer_host/input/synthetic_touchpad_pinch_gesture.h"
#include "content/browser/renderer_host/input/synthetic_touchscreen_pinch_gesture.h"

namespace content {

SyntheticPinchGesture::SyntheticPinchGesture(
    const SyntheticPinchGestureParams& params)
    : params_(params)
{
}
SyntheticPinchGesture::~SyntheticPinchGesture() { }

SyntheticGesture::Result SyntheticPinchGesture::ForwardInputEvents(
    const base::TimeTicks& timestamp,
    SyntheticGestureTarget* target)
{
    if (!lazy_gesture_) {
        SyntheticGestureParams::GestureSourceType source_type = params_.gesture_source_type;
        if (source_type == SyntheticGestureParams::DEFAULT_INPUT) {
            source_type = target->GetDefaultSyntheticGestureSourceType();
        }

        DCHECK_NE(SyntheticGestureParams::DEFAULT_INPUT, source_type);
        if (source_type == SyntheticGestureParams::TOUCH_INPUT) {
            lazy_gesture_.reset(new SyntheticTouchscreenPinchGesture(params_));
        } else {
            DCHECK_EQ(SyntheticGestureParams::MOUSE_INPUT, source_type);
            lazy_gesture_.reset(new SyntheticTouchpadPinchGesture(params_));
        }
    }

    return lazy_gesture_->ForwardInputEvents(timestamp, target);
}

} // namespace content
